Titre

-------------------------------------- Chapitre IV - dotNET ---------------------------------------

Analyse de Todd "traditionnelle" avec les outils .Net - 3/3

 

Voilà, je vous ai passé les détails, mais chacune de mes affirmations peut être vérifiée en poussant les investigations. Par exemple, je me suis assuré que la fonction "GetSHA1" qui ne fait pas partie du framework (propre au développeur) utilise bien System.Security.Cryptography.SHA1CryptoServiceProvider et aucune autre bidouille.

Les plus curieux pourront poursuivre l'analyse, pour comprendre pourquoi je parle, plus haut, d'une blacklist :

Code :

Code6

En creusant un peu, les connaisseurs verront que les informations saisies sont envoyées à un serveur pour refus ou non. Par défaut le programme accepte l'enregistrement si le serveur est inaccessible ! Dans un premier temps j'ai cru qu'il avait trouvé LA parade à la fraude ... et non, en fait il se contente de refuser l'enregistrement sur la base d'une liste noire. Elle contient certainement les licences expirées et celles utilisées par de nombreux utilisateurs.

4) Conclusion :

A part le renommage de tous les identifiants (Classes, Variables, etc.) en nom long et complexe, ainsi que le chiffrage des SDRs, on ne peut pas dire que la protection utilisée soit suffisante ! D'ailleurs on a pu voir encore quelques mots clés !
Il faut savoir que les obfuscateurs permettent d'exclure certaines portions de code afin de ne pas diminuer les performances de l'application, mais quand les réglages ne sont pas correctement définis (comme ici ), beaucoup d'indices restent visibles (Name, Email, RegistrationCode, etc.) !
Côté "brouillage" (flow control), il n'y a rien ! Donc finalement je ne suis pas sûr que ce soit le travail de Dotfuscator qui habituellement abuse des instructions "Switch" et "Goto".
Pour finir, je dirais que se limiter à inclure le contrôle des licences dans une liste noire alors qu'une licence non enregistrée sur le serveur (donc non achetée) n'est même pas vérifiée , c'est pas terrible ! D'autant que ce système ne fonctionne que si internet est ouvert. L'auteur aurait pu intégrer le refus d'une licence non générée par lui, rendant inutile la création d'un keygen ! On peut également regretter l'absence de contrôle ultérieur de cette fausse licence, pour verrouiller l'application quand internet sera de nouveau opérationnel !
Dans l'ensemble, on appréciera le léger effort et la prise de conscience, mais "Peut mieux faire !"

5) Annexe :

Pourquoi ne pas jeter un oeil sur comment forcer l'application à accepter n'importe quelles informations saisies, puisqu'il n'y a aucune vérification par la suite !?
Tout le monde aura compris qu'il faut que "m000145()" retourne "true" ! Et comme précisément, c'est la variable "flag" qui est retournée et qu'elle est initialisée à " false", on va changer cet état !
La difficulté réside en le fait que l'exécutable désobfusqué est bogué et ne correspond plus au fichier d'origine ! Je vais donc vous montrer par cette petite vidéo comment s'y retrouver. Je passerai volontairement tous les détails de l'analyse précédente et utiliserai un outil perso, qui est ni plus ni moins qu'un éditeur héxa, mais qui a l'avantage de simplifier ma démonstration.

Lien alternatif pour la vidéo: http://www.megaupload.com/?d=BJP8GVR8

 

 

Precedent        Sommaire        Suivant